package k2_oop.p5_abstractAndInterface.demo01;

/**
 * 一个方法只声明了，而没有具体定义，语法直接以分号结尾的，这个方法就是抽象方法，必须用 abstract 修饰
 * 一个类中如果有抽象方法的话，当前类就是抽象类
 * 有抽象方法，类必须是抽象的；如果类是抽象类，可以没有抽象方法，但是没有意义
 * 抽象类不能使用new的形式创建实例化对象，与构造方法和访问修饰符都无关
 * 不能new的原因：如果创建了对象，用对象调用抽象的方法，不知道该执行什么内容，逻辑是不通过的
 *
 * 必须由子类继承此抽象类，子类必须重写抽象方法，可以重写普通方法
 * 如果子类重写了全部抽象方法，子类为普通类，可以使用new创建对象
 * 如果子类重写了部分抽象方法，子类依然为抽象类，依然需要子类进行继承
 *
 */
public abstract class Person {

    private String name;
    private int age;

    public abstract void playGame();

    public abstract void writeProgram();

    public void eat(){
        System.out.println("");
    }

    public Person(){
        System.out.println("构造方法");
    }

    public static void drink(){
        System.out.println();
    }

}
